﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LogicaNegocio;
using Entidades;

namespace UI
{
    public partial class FrmCliente_Nuevo : Form
    {
        private Pais nacionalidad;
        private string genero;
        private string estadoCivil;

        public FrmCliente_Nuevo()
        {
            InitializeComponent();
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void Limpiar()
        {
            this.txtNombre.Clear();
            this.txtApellidos.Clear();
            this.txtCedula.Clear();
            this.txtDireccion.Clear();
            this.txtTelefono.Clear();
            this.txtIngresoMensual.Clear();
            this.txtE_Mail.Clear();
            this.dtpFechaNacimiento.ResetText();
            this.cboNacionalidad.SelectedIndex = -1;
            this.cboGenero.SelectedIndex = -1;
            this.cboEstadoCivil.SelectedIndex = -1;

        }

        private void FrmCliente_Nuevo_Load(object sender, EventArgs e)
        {
            this.cboNacionalidad.DisplayMember = "Nombre";
            this.cboNacionalidad.ValueMember = "ID";
            PaisLN pais = new PaisLN();
            this.cboNacionalidad.DataSource = pais.SelectAll();
            this.cboNacionalidad.SelectedIndex = -1;
            this.cboPaisTelefono.DisplayMember = "Nombre";
            this.cboPaisTelefono.ValueMember = "Prefijo";
            this.cboPaisTelefono.DataSource = pais.SelectAll();
            this.cboPaisTelefono.SelectedIndex = -1;
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            this.ptbLoading.Visible = true;
            this.btnGuardar.Enabled = false;
            this.nacionalidad = (Pais)this.cboNacionalidad.SelectedItem;
            this.genero = this.cboGenero.SelectedItem.ToString();
            this.estadoCivil = this.cboEstadoCivil.SelectedItem.ToString();
            this.bgwGuardar.RunWorkerAsync();
        }

        private void bgwGuardar_DoWork(object sender, DoWorkEventArgs e)
        {
            ClienteLN clienteLN = new ClienteLN();
            try
            {
                this.bgwGuardar.ReportProgress(0, "Validando...");
                Cliente nuevoCliente = new Cliente();
                nuevoCliente.Identificacion = this.txtCedula.Text;
                nuevoCliente.Nombre = this.txtNombre.Text;
                nuevoCliente.Apellidos = this.txtApellidos.Text;
                nuevoCliente.FechaDeNacimiento = this.dtpFechaNacimiento.Value;
                nuevoCliente.IngresoMensual = Convert.ToInt32(this.txtIngresoMensual.Text);
                nuevoCliente.Direccion = this.txtDireccion.Text;
                nuevoCliente.Nacionalidad = this.nacionalidad;
                List<string> telefonos = new List<string>();
                for (int i = 0; i < this.lboTelefonos.Items.Count; i++)
                {
                    telefonos.Add((string)this.lboTelefonos.Items[i]);
                }
                nuevoCliente.Telefonos = telefonos;
                nuevoCliente.Genero = this.genero;
                nuevoCliente.EstadoCivil = this.estadoCivil;
                nuevoCliente.E_Mail = this.txtE_Mail.Text;
                clienteLN.NuevoCliente(nuevoCliente);
                this.bgwGuardar.ReportProgress(1, "Cliente creado exitosamente.");
            }
            catch (Exception ex)
            {
                this.bgwGuardar.ReportProgress(3, ex.Message);
            }
        }

        private void bgwGuardar_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            this.lblMensaje.Text = e.UserState.ToString();
        }

        private void bgwGuardar_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.ptbLoading.Visible = false;
            this.btnGuardar.Enabled = true;
            this.Limpiar();
        }

        private void btnAgregarTelefono_Click(object sender, EventArgs e)
        {
            string telefono = "+" + this.cboPaisTelefono.SelectedValue + "-" + this.txtTelefono.Text;
            this.lboTelefonos.Items.Add(telefono);
        }

        private void btnEliminarTelefono_Click(object sender, EventArgs e)
        {
            this.lboTelefonos.Items.Remove(this.lboTelefonos.SelectedItem);
        }
    }
}
